import 'dart:core';
import 'dart:io';

import 'package:lib_core/model/gt_env_type.dart';

/// 全局配置，通过Flutter引擎启动后，配置初始化值
class GTGlobalConfig {
  // 是否为发布包
  bool publishBuild = true;
  // 当前环境
  // prod: 生产环境, pre: 预发布环境, test: 测试环境
  GTEnvType _envType = GTEnvType.prod;
  GTEnvType get envType => _envType;
  // 是否深色模式
  bool darkMode = false;
  // 当前语言环境
  String language = "en";
  // 是否红涨绿跌模式
  bool hzldMode = false;
  // 基础请求地址
  String baseUrl = "";
  // 文字缩放
  double textScaleFactor = 1.0;
  // 是否是沉浸式状态栏，默认 true
  bool transparentStatusBar = true;
  // 主工程版本号
  String versionName = "0.0.0";
  // 主工程版本Code
  int versionCode = 0;
  // 0:专业版，1:简洁版，2:土耳其分站，3:马耳他分站, 4:大陆版本, 5:香港站, 6:美国站, 7:加拿大站
  // 100: GateWalletApp
  String appType = "0";
  // Android 专用，iOS 暂时不需要
  // 0：官网，1：GooglePlay，2：HuaWei AppGallery
  String appStoreType = "0";
  // 系统版本 String 值
  // Android： 13、14、15
  // iOS： 16.0、17.1、17.2
  String osVersion = "";
  // 系统版本 Int 值
  // Android 专用，iOS 暂时不需要
  int osVersionSDKInt = 0;
  // 手机厂商
  // Android 专用，iOS 暂时不需要
  String vendorName = "";

  GTGlobalConfig();

  GTGlobalConfig.fromJson(dynamic json) {
    publishBuild = json['publishBuild'] ?? true;
    _envType = GTEnvType.parse(json['envType'] ?? GTEnvType.prod.name);

    darkMode = json['darkMode'];
    language = json['language'];
    baseUrl = json['baseUrl'];
    hzldMode = json['hzldMode'];
    transparentStatusBar = json['transparentStatusBar'] ?? true;
    versionName = json['versionName'] ?? "0.0.0";
    versionCode = json['versionCode'] ?? 0;
    appType = json['appType'] ?? "0";
    appStoreType = json['appStoreType'] ?? "0";
    osVersion = json['osVersion'] ?? "";
    osVersionSDKInt = json['osVersionSDKInt'] ?? 0;
    vendorName = json['vendorName'] ?? (Platform.isAndroid ? "android" : "ios");

    final factor = json['textScaleFactor'];
    if (factor is int) {
      textScaleFactor = factor.toDouble();
    } else if (factor is double) {
      textScaleFactor = factor;
    }
  }

  Map<String, dynamic> toJson() {
    final map = <String, dynamic>{};
    map['publishBuild'] = publishBuild;
    map['envType'] = _envType.name;
    map['darkMode'] = darkMode;
    map['language'] = language;
    map['baseUrl'] = baseUrl;
    map['hzldMode'] = hzldMode;
    map['textScaleFactor'] = textScaleFactor;
    map['transparentStatusBar'] = transparentStatusBar;
    map['versionName'] = versionName;
    map['versionCode'] = versionCode;
    map['appType'] = appType;
    map['appStoreType'] = appStoreType;
    map['osVersion'] = osVersion;
    map['osVersionSDKInt'] = osVersionSDKInt;
    map['vendorName'] = vendorName;
    return map;
  }

  // 是否 专业版 官网包 和 大陆包
  bool isGateIOAppType() {
    return appType == "0" || appType == "4";
  }

  // 是否为 Android 原生系统
  bool isAndroidOriginal() {
    return vendorName.toLowerCase().contains("android");
  }

  // 是否为 小米系统
  bool isXiaomi() {
    return vendorName.toLowerCase().contains("xiaomi");
  }

  // 是否为 Flyme 系统
  bool isHuawei() {
    return vendorName.toLowerCase().contains("huawei");
  }

}
